4
תגובות

"תפיסת " שגיאות

פתח משהה ,
תוך כדי ה"שדרוג " של מחלקה לשימוש בPDO, עלה לי רעיון ליצור מחלקה לטיפול בשגיאות.
חשבתי על זה והכול, והגעתי למסקנה שאני זקוק ל2 מחלקות :
מחלקה אחת לerrors ומחלקה אחת לexceptions (שלפי מה שקראתי, ארור זה שגיאות ואזהרות מPHP ואקספשיינס זה חריגים שקצת יותר קשה לתפוס אותם) .
תוך כדי שקראתי פה ושם(ובזמנו גם אתם המלצתם לי ללמוד את זה) , הבנתי שהדרך הטובה לתפיסת שגיאות וחריגים זה באמצע try & catch.

עכשיו, השאלה שלי היא האם ניתן לתפוס אותם גם ללא try & catch . זאת אומרת, האם גם הפריימוורקים הגדולים מצריכים שימוש בtry & catch כדי לזהות ולתפוס שגיאות , או שיש עוד דרכים בשביל זה ?

תודה :)

4 תשובות

avatar ענה intval ב 25 לפברואר 2013 #

דווקא בדיוק ההיפך.
חריגים מאוד קל לתפוס ושגיאות מ PHP קצת יותר קשה.

try & catch זה חלק מהשפה ואין שום סיבה לא להשתמש בהם.
מנגד, עדיף להשתמש בהם, איפה שצריך, ובקוד שלך לזרוק שגיאות אם משהו לא בסדר,
כמו חיבור למסד שלא הצליח.

האם צריך לעשות מחלקה לטיפול בשגיאות?
בדרך כלל לא. בגלל שהמטרה היא לטפל בשגיאות ברמה הכי פנימית של הקוד שאפשר ולא להוציא שגיאות שקראו במחלקה מסוימת אחוצה אל מחלקות אחרות או אל הקוד שמפעיל את אותה מחלקה. (במידת האפשר).

לתפוס שגיאות אפשר על ידי המדריך הזה וכל חריג שלא תתפל בו, גם הוא הופך להיות שגיאה fatal error של PHP שגם היא בסופו של דבר תגיע לפונקציה הזאת.
באותה פונקציה תוכל להציג למשתמש עמוד 500 חמוד שאומר ששום דבר לא עובד.

avatar ענה משהה ב 25 לפברואר 2013 #

תודה על התיקון :) ואיך אני יודע מתי להשתמש בtry&catch ?

ולפי מה שאתה אומר, לא כדאי לעשות מחלקה לטיפול בשגיאות - אז איך לטפל בהם ? עם המחלקה המובנית ?
כי לדוגמה אם אני עושה בדיקות בכל מיני מתודות במחלקה כלשהיא, ויש בעיה עם פרמטר או משהו שלא עובד במחלקה - אז חשבתי שמחלקה סטטית תוכל לעזור לי, תוך כדי שימוש בset_exception_handler ובset_error_handler , כדי שיפנו את השגיאות והחריגים למתודות בהתאם.

avatar ענה OrelBeY ב 25 לפברואר 2013 #

אם אתה רוצה לבצע איזושהי פונקציונאליות לסוגי חריגים מסוימים, מובן שאין שום בעיה ליצור מחלקה חדשה בשבילם, לא סתם יש אפשרות לכתוב יותר מבלוק catch אחד. אולי כדאי לך ללמוד על זה קצת יותר.

avatar ענה intval ב 25 לפברואר 2013 #

כן, זה בסדר גמור לשים את שני המטודות האלה בתוך מחלקה כמטודות סטטיות ולהשתמש בהם לתפיסת שגיאות גלובליות בקוד.